// pages/dailyperformance/create/index.js
import http from '../../../utils/request.js';

Page({
  data: {
    templates: [],         // 所有模板数据
    selectedTemplateId: null, // 选中的模板ID
    templateData: null,      // 选中的模板详情
    valuesData: {},          // 用户输入的业绩数据
    generatedText: '',       // 生成的文案
  },

  onLoad(options) {
    // 如果有传入模板ID，直接加载该模板
    if (options.template_id) {
      this.setData({
        selectedTemplateId: parseInt(options.template_id)
      }, () => {
        this.loadTemplateDetails();
      });
    } else {
      this.loadTemplates();
    }
  },

  // 加载模板数据
  async loadTemplates() {
    try {
      wx.showLoading({ title: '加载中...' });
      const res = await http.get('/performance_templates');
      
      if (res.status === 'success') {
        // 格式化模板数据，添加item_count字段
        const templates = res.data.map(template => {
          return {
            ...template,
            item_count: template.template_data.items.length
          };
        });
        
        this.setData({
          templates
        });
      } else {
        wx.showToast({ title: '加载失败', icon: 'error' });
      }
    } catch (error) {
      wx.showToast({ title: '网络错误', icon: 'error' });
    } finally {
      wx.hideLoading();
    }
  },

  // 加载模板详情
  async loadTemplateDetails() {
    try {
      wx.showLoading({ title: '加载模板...' });
      const templateId = this.data.selectedTemplateId;
      const res = await http.get(`/performance_templates/${templateId}`);
      
      if (res.status === 'success') {
        // 初始化值数据对象
        const valuesData = {};
        res.data.template_data.items.forEach(item => {
          // 确保键为字符串（后端要求）
          valuesData[String(item.id)] = '';
        });
        
        this.setData({
          templateData: res.data,
          valuesData,
          generatedText: ''
        });
      } else {
        wx.showToast({ title: '模板加载失败', icon: 'error' });
      }
    } catch (error) {
      wx.showToast({ title: '网络错误', icon: 'error' });
    } finally {
      wx.hideLoading();
    }
  },

  // 选择模板
  selectTemplate(e) {
    const templateId = e.currentTarget.dataset.id;
    this.setData({
      selectedTemplateId: templateId
    }, () => {
      this.loadTemplateDetails();
    });
  },

  // 处理输入变化
  handleInputChange(e) {
    const id = e.currentTarget.dataset.id;
    const value = e.detail.value;
    
    if (value.length > 10) {
      return;
    }
    
    // 更新值数据
    this.setData({
      [`valuesData.${id}`]: value
    }, () => {
      // 生成文案预览
      this.generatePreview();
    });
  },

  // 生成文案预览
  generatePreview() {
    const { templateData, valuesData } = this.data;
    if (!templateData || !templateData.template_data.items) {
      return;
    }
    
    let previewText = '';
    
    templateData.template_data.items.forEach(item => {
      const value = valuesData[String(item.id)] || '0';
      const unit = item.unit || '';
      previewText += `${item.product_name}：${value}${unit}\n`;
    });
    
    this.setData({
      generatedText: previewText.trim()
    });
  },

  // 提交业绩记录
  async submitRecord() {
    const { templateData, valuesData } = this.data;
    
    // 验证数据完整性
    let isValid = true;
    const errorFields = [];
    
    templateData.template_data.items.forEach(item => {
      const id = String(item.id);
      if (!valuesData[id] || valuesData[id] === '') {
        isValid = false;
        errorFields.push(item.product_name);
      }
    });
    
    if (!isValid) {
      wx.showToast({
        title: `请填写${errorFields.join('、')}`,
        icon: 'none',
        duration: 3000
      });
      return;
    }
    
    try {
      wx.showLoading({ title: '提交中...' });
      
      // 准备提交数据（确保键为字符串）
      const formattedValues = {};
      Object.keys(valuesData).forEach(key => {
        formattedValues[String(key)] = valuesData[key];
      });
      
      const payload = {
        template_id: templateData.template_id,
        values_data: formattedValues
      };
      
      const res = await http.post('/performance_records', payload);
      
      if (res.status === 'success') {
        wx.showToast({
          title: '提交成功',
          icon: 'success',
          duration: 1500
        });
        
        // 返回首页并刷新数据
        setTimeout(() => {
          const pages = getCurrentPages();
          if (pages.length > 1) {
            const prevPage = pages[pages.length - 2];
            if (prevPage.route === 'pages/dailyperformance/dailyperformance') {
              prevPage.onLoad();
            }
          }
          wx.navigateBack();
        }, 1500);
      } else {
        wx.showToast({
          title: res.message || '提交失败',
          icon: 'none'
        });
      }
    } catch (error) {
      wx.showToast({
        title: '提交失败',
        icon: 'none'
      });
    } finally {
      wx.hideLoading();
    }
  },

  // 返回上一页
  goBack() {
    wx.navigateBack();
  },

  // 创建新模板
  createTemplate() {
    wx.navigateTo({
      url: '/pages/dailyperformance/template'
    });
  }
});